/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

import java.awt.Toolkit;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

/**
 *
 * @author Nai
 */
public class LimitadorCaracteres extends PlainDocument {

    int numChars = 0;
    boolean nomesNumeros = false;

    public LimitadorCaracteres(int numChars, boolean nomesNumeros) {
        this.numChars = numChars;
        this.nomesNumeros = nomesNumeros;
    }

    public void insertString(int offset, String str, AttributeSet a)
            throws BadLocationException {
        boolean valid = true;
        char[] insertChars = str.toCharArray();

        if (insertChars.length + getLength() <= this.numChars) {
            if (nomesNumeros) {
                for (int i = 0; i < insertChars.length; i++) {
                    if (!Character.isDigit(insertChars[i])) {
                        valid = false;
                        break;
                    }
                }
            }
        } else {
            valid = false;
        }

        if (valid) {
            super.insertString(offset, str, a);
        } else {
         Toolkit.getDefaultToolkit().beep();
        }
    }
    /*  /**
     * Método al que llama el editor cada vez que se intenta insertar caracteres.
     * Sólo debemos verificar arg1, que es la cadena que se quiere insertar en el JTextField
     */
    /* public void insertString(int arg0, String arg1, AttributeSet arg2) throws BadLocationException
    {
    for (int i=0;i<arg1.length();i++)
    // si no es digit, volvemos
    if (!Character.isDigit(arg1.charAt(i)))
    return;
    
    // Si todos son digit, insertamos el texto en el JTextField
    super.insertString(arg0, arg1, arg2);
    }*/
}
